The invention relates to computer peripheral equipment and in particular to automatic updating of device drivers and other software routines.
Computer systems of various makes and manufacture are often required to interface with other systems and, in particular, peripheral devices having varied signaling, control and protocol requirements. Rather than require each application process, or operating system, have the capability to accommodate the specialized signaling and control requirements of a particular device, interfacing software in the form of device specific drivers is often supplied with device hardware. Thus, drivers are required for devices such as printers, scanners, disk drives, keyboards, etc. While some drivers, such as for a keyboard, are included with the computer operating system, others are loaded when a device is initially attached or connected to the computer.
The driver translates data between a device and programs that use the device. Each device includes specialized commands that are available only through the driver. In contrast, an application accesses devices using generic commands. The driver, therefore, accepts generic commands from a program and translates them into specialized commands for the device.
For example, an application, such as a word processing program, may generate a print file using a Graphical Device Interface (GDI) or a Device Driver Interface (DDI). A printer driver specific to the selected attached printer, then translates the print file into commands and a data format and protocol understood by that printer.
Thus, a computer operator must obtain and load drivers required to interface each of the varied devices attached to a computer. In addition, to access increased functionality or compatibility, the operator must update previously installed drivers as new versions are issued and released. In support of this function, device manufacturers maintain customer service facilities including databases for users to download the latest versions of supported device drivers. For example, the assignee of the instant patent application maintains an Internet web site for users to download the most recent version of device drivers. The assignee further provides for notification to registered customers when drivers are updated.
Another method of distributing device drivers to users is described in U.S. Pat. No. 5,580,177 of Gase, et al. entitled xe2x80x9cPrinter/client Network With Centrally Updated Printer Drivers And Printer Status Monitoringxe2x80x9d and issued on Dec. 3, 1996 to the Assignee of the present application. The patent describes a network configuration including multiple client processors, a file server and multiple printers. Each client processor has stored in memory a printer driver procedure which enables the client processor to interface with at least one printer type. The file server includes memory for storing a most updated printer driver procedure for each printer type coupled to the file server. The file server is responsive to a print request from a client processor to assign a printer to the requesting client processor. The file server, in combination with the client processor, determines if a printer driver procedure for the assigned printer in the client processor is identical to a most updated printer driver procedure stored in memory in the file server. If not, the file server enables alteration of the printer driver procedure in the client processor to bring it into coincidence with the most updated print driver procedure. The disclosure of U.S. Pat. No. 5,580,177 is incorporated herein by reference in its entirety.
Configuring a network to attach a printer is further described in U.S. Pat. No. 5,832,191 of Thorne entitled xe2x80x9cMethod And Apparatus For Automatically Enabling Communication With A Network Printerxe2x80x9d and issued on Nov. 3, 1998 to the Assignee of the present application. The patent describes a method of enabling a new printer to automatically communicate over a network with client processors connected to the network. The network is at least partially controlled by a network server which, for each respective printer, stores an xe2x80x9cagentxe2x80x9d data structure. The agent data structure maintains information about the respective client-accessible printer. The method begins by responding to a message from a new printer by storing printer identification data included in the message. An instance of an agent data structure is then established using data from the message. Communications with the new printer are established to obtain further data concerning the new printer for addition to the agent data structure. An instance of a communication data structure is then established and data is inserted in that data structure to configure a communication procedure which enables communication with both the newly connected printer and the printer""s agent data structure. A printer request from a client processor is handled by employing the communication data structure to automatically establish a communication pathway between the client processor and the new printer and providing data regarding the new printer from the agent data structure to the client processor for use thereby. The disclosure of U.S. Pat. No. 5,832,191 is likewise incorporated herein by reference in its entirety.
While these systems and methods provide a flexible arrangement for distributing drivers to server clients, they are not directed to standalone computers. These patents instead rely on storage at and distribution of drivers by a central print server to clients. Further, these disclosures do not address obtaining copies of updated drivers.
Accordingly, a need exists for a system and method for providing application and operating system software with updated interfacing software to help ensure compatibility and maximize functionality between and among processes, objects and devices.
According to one aspect of the invention, a printer includes a printer interface configured to receive, from a remote processor, a Page Description Language (PDL) message generated by an active printer driver routine and provides a corresponding bitmap. The remote processor may be a Personal Computer (PC) or workstation connected to the printer or a server providing printer services to a network of users (e.g., clients). The printer also has a print engine configured to print an image corresponding to the bitmap. A communications interface is connected to receive a latest version of the printer driver routine which is then stored in a memory that is part of the printer. The printer further includes a local processor for selectively supplying the remote processor (e.g., PC) with the latest version of the printer driver routine from the local memory.
According to a feature of the invention, the local printer processor is responsive to a version designation of the active printer driver routine (e.g., the routine installed in the client computer or local server) for selectively supplying the latest version of the print driver routine.
According to another feature of the invention, the printer is connected to the remote processor by way of a dedicated printer channel, such as a parallel or serial printer port. The communications interface may include connectivity to a wide area network, such as the Internet, to provide access to a centralized database of printer servers including the latest versions of the drivers.
According to another feature of the invention, a processor integral to the printer is configured (e.g., executes software and/or firmware) causing it to access a remote centralized database of printer drivers and download into local memory the latest version of the printer driver routine from the remote centralized database. The process detects a version of the active printer driver routine. The detection may be performed independently of a print job or may be performed in response to a receipt of a print job by the printer. The printer may be further operable to inform the computer to which it is attached that an updated printer driver is required and/or is available, by selectively transmitting a message to the remote processor in response to the version of the active printer driver routine being older than the latest version. The message may include a query to a user of the remote processor (e.g., the computer or server operator) informing the user of an availability of a later version of the printer driver routine and soliciting a response about downloading the later version of the printer driver routine from the printer to the remote processor. The printer may also examine (e.g., parse) the PDL message generated by the active printer driver routine to detect the version of the active printer driver routine in use.
According to another aspect of the invention, a method of printing computer output includes retrieving, from a remote resource (e.g., a printer manufacturer""s customer support web site), a latest version of a printer driver and storing the driver in a local printer memory. The printer then identifies a version of a printer driver installed on a remote processor and selectively updates the printer driver installed on the remote processor with the latest version of the printer driver. The printer receives, from the remote processor, a Page Description Language (PDL) message generated by a version of the printer driver. The printer driver may be an older version, subject to updating, or may represent the latest version as downloaded from the printer according to the method. The printer processes the PDL message to provide a bitmap and prints the bitmap to paper.
According to another aspect of the invention, a method of updating a software routine, such as a device driver, includes maintaining a centralized database including a latest version of the software routine. The centralized database may be, for example, a local server, a remote web site, or other resource accessible by a local printer. Communication is established with the centralized database from a location remote from the database. A latest version of the software routine is retrieved from the centralized database and stored in a first device located at the remote location. The software routine is such that an operation of the first device is dependent upon a use of the software routine by a second device. For example, the software routine might comprise a printer driver installed and operating on the second device (e.g., a printer server) such that the first device (e.g., printer) is dependent on the printer server functionality performed.
A version of the software routine on the second device is identified and, in response, the software routine installed on the second device is selectively updated with the latest version of the software routine as necessary. Once installed, data such as print files, may be processed using the latest version of the software routine to provide processed data, the processed data being transmitted from the second device to the first device, the processed data being further processed by the first device to perform the subject operation, e.g., print a page of output.
According to another feature of the invention, the step of processing data using the latest version of the software routine to provide processed data includes processing a print file to provide the processed data to the first device using a PDL.
The various aspects of the invention can be used to provide apparatus for and methods of maintaining an updated interface module at a resource for use by a client. A driven device maintains a local copy of the appropriate driver to be used by interfacing apparatus. Upon detecting the use of an old version of an interface module, the driven device notifies the user that an updated version is available for download and provides collateral information about the updated software. Collateral information may include new capabilities or compatibility criteria.
The foregoing has outlined rather broadly the features of various embodiments of the present invention in order that the detailed description of the invention that follows may be better understood. It should be appreciated by those skilled in the art that the conception and specific embodiments disclosed may be readily utilized as a basis for modifying or designing other structures for carrying out the same purposes of the present invention. It should also be realized by those skilled in the art that such equivalent constructions do not depart from the spirit and scope of the invention as set forth in the appended claims. The novel features which are believed to be characteristic of the invention, both as to its organization and method of operation, together with further objects and advantages will be better understood from the following description when considered in connection with the accompanying figures. It is to be expressly understood, however, that each of the figures is provided for the purpose of illustration and description only and is not intended as a definition of the limits of the present invention.